/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package entities;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;

/**
 *
 * @author root
 */
@Entity
@Table(name = "unidades_alojamiento")
@NamedQueries({
    @NamedQuery(name = "UnidadesAlojamiento.findAll", query = "SELECT u FROM UnidadesAlojamiento u"),
    @NamedQuery(name = "UnidadesAlojamiento.findByIdUnidad", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.idUnidad = :idUnidad"),
    @NamedQuery(name = "UnidadesAlojamiento.findByNombre", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.nombre = :nombre"),
    @NamedQuery(name = "UnidadesAlojamiento.findByUbicaci\u00f3n", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.ubicaci\u00f3n = :ubicaci\u00f3n"),
    @NamedQuery(name = "UnidadesAlojamiento.findByCapacidad", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.capacidad = :capacidad"),
    @NamedQuery(name = "UnidadesAlojamiento.findByCategoria", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.categoria = :categoria"),
    @NamedQuery(name = "UnidadesAlojamiento.findByAmbientes", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.ambientes = :ambientes"),
    @NamedQuery(name = "UnidadesAlojamiento.findByDormitorios", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.dormitorios = :dormitorios"),
    @NamedQuery(name = "UnidadesAlojamiento.findByPatio", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.patio = :patio"),
    @NamedQuery(name = "UnidadesAlojamiento.findByParrilla", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.parrilla = :parrilla"),
    @NamedQuery(name = "UnidadesAlojamiento.findByCochera", query = "SELECT u FROM UnidadesAlojamiento u WHERE u.cochera = :cochera")})
public class UnidadesAlojamiento implements Serializable {

    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "ubicacionFisica")
    private Collection<Articulos> articulosCollection;
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idUnidad")
    private Integer idUnidad;
    @Basic(optional = false)
    @Column(name = "Nombre")
    private String nombre;
    @Basic(optional = false)
    @Column(name = "Ubicaci\u00f3n")
    private String ubicación;
    @Basic(optional = false)
    @Column(name = "Capacidad")
    private int capacidad = 1;
    @Column(name = "Categoria")
    private String categoria;
    @Column(name = "Ambientes")
    private Integer ambientes = 1;
    @Column(name = "Dormitorios")
    private Integer dormitorios = 1;
    @Basic(optional = false)
    @Column(name = "Patio")
    private String patio;
    @Basic(optional = false)
    @Column(name = "Parrilla")
    private String parrilla;
    @Basic(optional = false)
    @Column(name = "Cochera")
    private String cochera;
    @Basic(optional = false)
    @Column(name = "Activo")
    private String activo;
    @Basic(optional = false)
    @Column(name = "Observacion")
    private String observacion;

    public UnidadesAlojamiento() {
    }

    public UnidadesAlojamiento(Integer idUnidad) {
        this.idUnidad = idUnidad;
    }

    public UnidadesAlojamiento(Integer idUnidad, String localizador, String ubicación, int capacidad, String patio, String parrilla, String cochera, String activo) {
        this.idUnidad = idUnidad;
        this.nombre = localizador;
        this.ubicación = ubicación;
        this.capacidad = capacidad;
        this.patio = patio;
        this.parrilla = parrilla;
        this.cochera = cochera;
        this.activo = activo;
    }

    public Integer getIdUnidad() {
        return idUnidad;
    }

    public void setIdUnidad(Integer idUnidad) {
        Integer oldIdUnidad = this.idUnidad;
        this.idUnidad = idUnidad;
        changeSupport.firePropertyChange("idUnidad", oldIdUnidad, idUnidad);
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        String oldNombre = this.nombre;
        this.nombre = nombre;
        changeSupport.firePropertyChange("nombre", oldNombre, nombre);
    }

    public String getUbicación() {
        return ubicación;
    }

    public void setUbicación(String ubicación) {
        String oldUbicación = this.ubicación;
        this.ubicación = ubicación;
        changeSupport.firePropertyChange("ubicaci\u00f3n", oldUbicación, ubicación);
    }

    public int getCapacidad() {
        return capacidad;
    }

    public void setCapacidad(int capacidad) {
        int oldCapacidad = this.capacidad;
        this.capacidad = capacidad;
        changeSupport.firePropertyChange("capacidad", oldCapacidad, capacidad);
    }

    public String getCategoria() {
        return categoria;
    }

    public void setCategoria(String categoria) {
        String oldCategoria = this.categoria;
        this.categoria = categoria;
        changeSupport.firePropertyChange("categoria", oldCategoria, categoria);
    }

    public Integer getAmbientes() {
        return ambientes;
    }

    public void setAmbientes(Integer ambientes) {
        Integer oldAmbientes = this.ambientes;
        this.ambientes = ambientes;
        changeSupport.firePropertyChange("ambientes", oldAmbientes, ambientes);
    }

    public Integer getDormitorios() {
        return dormitorios;
    }

    public void setDormitorios(Integer dormitorios) {
        Integer oldDormitorios = this.dormitorios;
        this.dormitorios = dormitorios;
        changeSupport.firePropertyChange("dormitorios", oldDormitorios, dormitorios);
    }

    public String getPatio() {
        return patio;
    }

    public void setPatio(String patio) {
        String oldPatio = this.patio;
        this.patio = patio;
        changeSupport.firePropertyChange("patio", oldPatio, patio);
    }

    public String getParrilla() {
        return parrilla;
    }

    public void setParrilla(String parrilla) {
        String oldParrilla = this.parrilla;
        this.parrilla = parrilla;
        changeSupport.firePropertyChange("parrilla", oldParrilla, parrilla);
    }

    public String getCochera() {
        return cochera;
    }

    public void setCochera(String cochera) {
        String oldCochera = this.cochera;
        this.cochera = cochera;
        changeSupport.firePropertyChange("cochera", oldCochera, cochera);
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idUnidad != null ? idUnidad.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof UnidadesAlojamiento)) {
            return false;
        }
        UnidadesAlojamiento other = (UnidadesAlojamiento) object;
        if ((this.idUnidad == null && other.idUnidad != null) || (this.idUnidad != null && !this.idUnidad.equals(other.idUnidad))) {
            return false;
        }
        return true;
    }

    public String getActivo() {
        return activo;
    }

    public void setActivo(String activo) {
        String oldActivo = this.activo;
        this.activo = activo;
        changeSupport.firePropertyChange("activo", oldActivo, activo);
    }

    @Override
    public String toString() {
        if (this.nombre.equals("0")) {
            return "Deposito";
        } else if (this.nombre.equals("TODOS")){
            return "TODOS";
        } else {
            return "Departamento " + this.nombre;
        }
    }

    public Collection<Articulos> getArticulosCollection() {
        return articulosCollection;
    }

    public void setArticulosCollection(Collection<Articulos> articulosCollection) {
        this.articulosCollection = articulosCollection;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        String oldObservacion = this.observacion;
        this.observacion = observacion;
        changeSupport.firePropertyChange("observacion", oldObservacion, observacion);
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }
}